home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / CIncludes / DatabaseAccess.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  6.7 KB  |  219 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        DatabaseAccess.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __DATABASEACCESS__
  13. #define __DATABASEACCESS__
  14.  
  15. #ifndef __RESOURCES__
  16. #include <Resources.h>
  17. #endif
  18.  
  19.  
  20. enum {
  21.  
  22.  
  23. /* error and status codes */
  24.  rcDBNull = -800,
  25.  rcDBValue = -801,
  26.  rcDBError = -802,
  27.  rcDBBadType = -803,
  28.  rcDBBreak = -804,
  29.  rcDBExec = -805,
  30.  rcDBBadSessID = -806,
  31.  rcDBBadSessNum = -807,            /* bad session number for DBGetConnInfo */
  32.  rcDBBadDDEV = -808,            /* bad ddev specified on DBInit */
  33.  rcDBAsyncNotSupp = -809,        /* ddev does not support async calls */
  34.  rcDBBadAsyncPB = -810,            /* tried to kill a bad pb */
  35.  rcDBNoHandler = -811,            /* no app handler for specified data type */
  36.  rcDBWrongVersion = -812,        /* incompatible versions */
  37.  rcDBPackNotInited = -813,        /* attempt to call other routine before InitDBPack */
  38.  
  39. /* messages for status functions for DBStartQuery */
  40.  kDBUpdateWind = 0,
  41.  kDBAboutToInit = 1,
  42.  kDBInitComplete = 2,
  43.  kDBSendComplete = 3,
  44.  kDBExecComplete = 4,
  45.  kDBStartQueryComplete = 5
  46. };
  47. enum {
  48.  
  49. /* messages for status functions for DBGetQueryResults */
  50.  kDBGetItemComplete = 6,
  51.  kDBGetQueryResultsComplete = 7,
  52.  
  53. /* data type codes */
  54.  
  55. #define typeNone 'none'
  56. #define typeDate 'date'
  57. #define typeTime 'time'
  58. #define typeTimeStamp 'tims'
  59. #define typeDecimal 'deci'
  60. #define typeMoney 'mone'
  61. #define typeVChar 'vcha'
  62. #define typeVBin 'vbin'
  63. #define typeLChar 'lcha'
  64. #define typeLBin 'lbin'
  65. #define typeDiscard 'disc'
  66.  
  67. /* "dummy" types for DBResultsToText */
  68. #define typeUnknown 'unkn'
  69. #define typeColBreak 'colb'
  70. #define typeRowBreak 'rowb'
  71.  
  72. /* pass this in to DBGetItem for any data type */
  73. #define typeAnyType (DBType)0
  74.  
  75. /* infinite timeout value for DBGetItem */
  76.  
  77.  kDBWaitForever = -1,
  78.  
  79. /*  flags for DBGetItem  */
  80.  kDBLastColFlag = 0x0001,
  81.  kDBNullFlag = 0x0004
  82. };
  83.  
  84. typedef OSType DBType;
  85.  
  86. /* structure for asynchronous parameter block */
  87. struct DBAsyncParamBlockRec {
  88.  ProcPtr completionProc;        /* pointer to completion routine */
  89.  OSErr result;                    /* result of call */
  90.  long userRef;                    /* for application's use */
  91.  long ddevRef;                    /* for ddev's use */
  92.  long reserved;                    /* for internal use */
  93. };
  94.  
  95. typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
  96. typedef DBAsyncParamBlockRec *DBAsyncParmBlkPtr;
  97.  
  98. /* structure for resource list in QueryRecord */
  99. struct ResListElem {
  100.  ResType theType;                /* resource type */
  101.  short id;                        /* resource id */
  102. };
  103.  
  104. typedef struct ResListElem ResListElem;
  105. typedef ResListElem *ResListPtr, **ResListHandle;
  106.  
  107. /* structure for query list in QueryRecord */
  108. typedef Handle **QueryListHandle;
  109.  
  110. struct QueryRecord {
  111.  short version;                    /* version */
  112.  short id;                        /* id of 'qrsc' this came from */
  113.  Handle queryProc;                /* handle to query def proc */
  114.  Str63 ddevName;                /* ddev name */
  115.  Str255 host;                    /* host name */
  116.  Str255 user;                    /* user name */
  117.  Str255 password;                /* password */
  118.  Str255 connStr;                /* connection string */
  119.  short currQuery;                /* index of current query */
  120.  short numQueries;                /* number of queries in list */
  121.  QueryListHandle queryList;        /* handle to array of handles to text */
  122.  short numRes;                    /* number of resources in list */
  123.  ResListHandle resList;            /* handle to array of resource list elements */
  124.  Handle dataHandle;                /* for use by query def proc */
  125.  long refCon;                    /* for use by application */
  126. };
  127.  
  128. typedef struct QueryRecord QueryRecord;
  129. typedef QueryRecord *QueryPtr, **QueryHandle;
  130.  
  131. /* structure of column types array in ResultsRecord */
  132. typedef Handle ColTypesHandle;
  133.  
  134. /* structure for column info in ResultsRecord */
  135. struct DBColInfoRecord {
  136.  short len;
  137.  short places;
  138.  short flags;
  139. };
  140.  
  141. typedef struct DBColInfoRecord DBColInfoRecord;
  142.  
  143. typedef Handle ColInfoHandle;
  144.  
  145. /* structure of results returned by DBGetResults */
  146. struct ResultsRecord {
  147.  short numRows;                    /* number of rows in result */
  148.  short numCols;                    /* number of columns per row */
  149.  ColTypesHandle colTypes;        /* data type array */
  150.  Handle colData;                /* actual results */
  151.  ColInfoHandle colInfo;            /* DBColInfoRecord array */
  152. };
  153.  
  154. typedef struct ResultsRecord ResultsRecord;
  155.  
  156.  
  157. #ifdef __cplusplus
  158. extern "C" {
  159. #endif
  160. pascal OSErr InitDBPack(void)
  161.  = {0x3F3C,0x0004,0x303C,0x0100,0xA82F}; 
  162. pascal OSErr DBInit(long *sessID,ConstStr63Param ddevName,ConstStr255Param host,
  163.  ConstStr255Param user,ConstStr255Param passwd,ConstStr255Param connStr,
  164.  DBAsyncParmBlkPtr asyncPB)
  165.  = {0x303C,0x0E02,0xA82F}; 
  166. pascal OSErr DBEnd(long sessID,DBAsyncParmBlkPtr asyncPB)
  167.  = {0x303C,0x0403,0xA82F}; 
  168. pascal OSErr DBGetConnInfo(long sessID,short sessNum,long *returnedID,long *version,
  169.  Str63 ddevName,Str255 host,Str255 user,Str255 network,Str255 connStr,long *start,
  170.  OSErr *state,DBAsyncParmBlkPtr asyncPB)
  171.  = {0x303C,0x1704,0xA82F}; 
  172. pascal OSErr DBGetSessionNum(long sessID,short *sessNum,DBAsyncParmBlkPtr asyncPB)
  173.  = {0x303C,0x0605,0xA82F}; 
  174. pascal OSErr DBSend(long sessID,char *text,short len,DBAsyncParmBlkPtr asyncPB)
  175.  = {0x303C,0x0706,0xA82F}; 
  176. pascal OSErr DBSendItem(long sessID,DBType dataType,short len,short places,
  177.  short flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
  178.  = {0x303C,0x0B07,0xA82F}; 
  179. pascal OSErr DBExec(long sessID,DBAsyncParmBlkPtr asyncPB)
  180.  = {0x303C,0x0408,0xA82F}; 
  181. pascal OSErr DBState(long sessID,DBAsyncParmBlkPtr asyncPB)
  182.  = {0x303C,0x0409,0xA82F}; 
  183. pascal OSErr DBGetErr(long sessID,long *err1,long *err2,Str255 item1,Str255 item2,
  184.  Str255 errorMsg,DBAsyncParmBlkPtr asyncPB)
  185.  = {0x303C,0x0E0A,0xA82F}; 
  186. pascal OSErr DBBreak(long sessID,Boolean abort,DBAsyncParmBlkPtr asyncPB)
  187.  = {0x303C,0x050B,0xA82F}; 
  188. pascal OSErr DBGetItem(long sessID,long timeout,DBType *dataType,short *len,
  189.  short *places,short *flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
  190.  = {0x303C,0x100C,0xA82F}; 
  191. pascal OSErr DBUnGetItem(long sessID,DBAsyncParmBlkPtr asyncPB)
  192.  = {0x303C,0x040D,0xA82F}; 
  193. pascal OSErr DBKill(DBAsyncParmBlkPtr asyncPB)
  194.  = {0x303C,0x020E,0xA82F}; 
  195. pascal OSErr DBGetNewQuery(short queryID,QueryHandle *query)
  196.  = {0x303C,0x030F,0xA82F}; 
  197. pascal OSErr DBDisposeQuery(QueryHandle query)
  198.  = {0x303C,0x0210,0xA82F}; 
  199. pascal OSErr DBStartQuery(long *sessID,QueryHandle query,ProcPtr statusProc,
  200.  DBAsyncParmBlkPtr asyncPB)
  201.  = {0x303C,0x0811,0xA82F}; 
  202. pascal OSErr DBGetQueryResults(long sessID,ResultsRecord *results,long timeout,
  203.  ProcPtr statusProc,DBAsyncParmBlkPtr asyncPB)
  204.  = {0x303C,0x0A12,0xA82F}; 
  205. pascal OSErr DBResultsToText(ResultsRecord *results,Handle *theText)
  206.  = {0x303C,0x0413,0xA82F}; 
  207. pascal OSErr DBInstallResultHandler(DBType dataType,ProcPtr theHandler,
  208.  Boolean isSysHandler)
  209.  = {0x303C,0x0514,0xA82F}; 
  210. pascal OSErr DBRemoveResultHandler(DBType dataType)
  211.  = {0x303C,0x0215,0xA82F}; 
  212. pascal OSErr DBGetResultHandler(DBType dataType,ProcPtr *theHandler,Boolean getSysHandler)
  213.  = {0x303C,0x0516,0xA82F}; 
  214. #ifdef __cplusplus
  215. }
  216. #endif
  217.  
  218. #endif
  219.